package com.jt.controller;

import com.jt.pojo.User;
import com.jt.service.UserService;
import org.apache.ibatis.annotations.Update;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("users")
@CrossOrigin//解决跨域问题
public class UserController {
    /*
    * 前端的请求是什么请求，我们的控制台就得用什么方式的
    * 比如前端使用get()方式controller 层的就用 @GetMapping
    * 前端使用的是post() 就用    @PostMapping
    *     put()请求   就用putMapper()
    *这样我们请求的方式就控制我们的请求方式了
    * 不然resquestmapper 谁都可访问我们的控制层了
    *
    * */


    @Autowired
    private UserService service;
    //利用mp查询demo_user全部数据 /findAll

    @GetMapping("/findAll")
    public List<User> findAll(){

        return service.getAll();

    }

    @GetMapping("gteUserId")
    public User gteUserId(User user){

        return service.gteUserId(user);
    }

    @GetMapping("getByNs")
    public User getByNs(User user){


        return service.getByNs(user);
    }

     @RequestMapping("upda1")
    public void upda1(User user){

      service.upda1(user);

    }
    //实现数据的绑定
    //使用注解  @PathVariable
    @GetMapping("/user/{name}")
    public List<User> user( @PathVariable String name){

        return service.getName(name);
    }
/*
    在使用对象来接我们的参数的时候，不用注解也可以
    @GetMapping("/user1/{属性值}/{属性值}")
    public List<User> user1(  String name){
  User user=new User();
           user.setName(name);
        return service.getName(user.getName());
    }*/
//如果前端传进来的是字符。使用@PathVariable注解来，如果是对象RequestMapper注解
    @DeleteMapping("/user/{id}")
   public void deletById(@PathVariable Integer id){
       service.deletById(id);
   }


   /*
   post请求发过来的数据是json字符串
   前台传来的是一个json字符串
   我们的对象不能解析
   * springmvc开发的两个注解用于数据的交换操作

     @reaponseBody 将对象装换为json字符串
     @RequestBody 将前端传来的数据转换为user对象
   * */

    @PostMapping("/saveUser")
   public String saveUser( @RequestBody  User user){

        service.saveUser(user);
    return "新增数据成功";
   }


   //用户新增restFul 风格
    @PostMapping("/user/{name}/{age}/{sex}")
    public String saveUser2(User user){
    service.saveUser2(user);
     return "新增成功";
    }

    //修改用户信息
    @PutMapping("/updateUser")
    public String updateUser( @RequestBody User user){
        service.updateUser(user);
        return "修改成功";
    }

}
